package com.gt.web.srv.mapper;

import com.gt.web.srv.domain.SsActivity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

@Mapper
public interface SsActivityMapper {
    /**
     * 根据ID查询活动
     * @param activityId 活动ID
     * @return 活动实体
     */
    SsActivity selectById(Long activityId);

    /**
     * 根据活动组ID查询活动列表
     * @param activityGroupId 活动组ID
     * @return 活动列表
     */
    List<SsActivity> selectByGroupId(Long activityGroupId);

    /**
     * 查询活动列表
     * @param SsActivity 查询条件
     * @return 活动列表
     */
    List<SsActivity> selectList(SsActivity SsActivity);

    /**
     * 查询有效活动列表
     * @param currentTime 当前时间
     * @return 有效活动列表
     */
    List<SsActivity> selectValidList(Date currentTime);

    /**
     * 新增活动
     * @param SsActivity 活动实体
     * @return 影响行数
     */
    int insert(SsActivity SsActivity);

    /**
     * 批量新增活动
     * @param activities 活动列表
     * @return 影响行数
     */
    int batchInsert(List<SsActivity> activities);

    /**
     * 更新活动
     * @param SsActivity 活动实体
     * @return 影响行数
     */
    int update(SsActivity SsActivity);

    /**
     * 更新活动状态
     * @param activityId 活动ID
     * @param status 状态
     * @param updateBy 更新人
     * @return 影响行数
     */
    int updateStatus(@Param("activityId") Long activityId,
                     @Param("status") Integer status,
                     @Param("updateBy") String updateBy);

    /**
     * 增加报名人数
     * @param activityId 活动ID
     * @param num 增加数量
     * @return 影响行数
     */
    int increaseEnrollNum(@Param("activityId") Long activityId,
                          @Param("num") Integer num);

    /**
     * 删除活动
     * @param activityId 活动ID
     * @return 影响行数
     */
    int deleteById(Long activityId);

    /**
     * 根据活动组ID删除活动
     * @param activityId 活动组ID
     * @return 影响行数
     */
    int deleteByGroupId(Long activityId);
}